//
// Created by Administrator on 2021/5/25.
// @file SimpleFunction.cpp
// @author jmdvirus
// @date 2021-05-25 20:06:16
//

#include "SimpleFunction.h"

void SimpleFunction::DetectHSColor(const cv::Mat &img, double minHue, double maxHue, double minSat, double maxSat,
                                    cv::Mat &mask)
{
    cv::Mat hsv;
    cv::cvtColor(img, hsv, cv::COLOR_BGR2HSV);

    std::vector<cv::Mat> channels;
    cv::split(hsv, channels);

    cv::Mat mask1;
    cv::threshold(channels[0], mask1, minHue, 255, cv::THRESH_BINARY_INV);
    cv::Mat mask2;
    cv::threshold(channels[0], mask2, maxHue, 255, cv::THRESH_BINARY);

    cv::Mat hueMask;
    if (minHue < maxHue)
    {
        hueMask = mask1 & mask2;
    }
    else
    {
        hueMask = mask1 | mask2;
    }

    cv::Mat satMask;
    cv::inRange(channels[1], minSat, maxSat, satMask);

    mask = hueMask & satMask;
}
